// api/family/blog.ts
import { api } from '@/api/request'
import type { PageData, PageQuery } from '@/types'

// 博客信息模型
export interface BlogInfo {
    id: number
    title: string
    type: string  // 博客类型: tech, travel
    status: string  // 发布状态: draft, published, archived
    summary: string  // 博客摘要
    content: string  // 博客内容
    tags: string  // 标签，逗号分隔
    cover_image: string  // 封面图片URL
    views: number  // 浏览量
    likes: number  // 点赞数
    comments: number  // 评论数
    user_id: number
    family_id: number
    created_at: string
    updated_at: string
}

// 博客查询参数
export interface BlogQuery extends PageQuery {
    title?: string
    type?: string
    status?: string
}

// 创建博客请求参数
export interface CreateBlogRequest {
    title: string
    type: string
    status: string
    summary?: string
    content: string
    tags?: string
    cover_image?: string
    user_id: number
    family_id: number
}

// 更新博客请求参数
export interface UpdateBlogRequest {
    title?: string
    type?: string
    status?: string
    summary?: string
    content?: string
    tags?: string
    cover_image?: string
    views?: number
    likes?: number
    comments?: number
}

// 博客API接口定义
export const BlogApi = {
    // 获取博客列表
    getBlogList: (params: BlogQuery) => {
        return api.get<PageData<BlogInfo>>('/system/blog/list', { params })
    },
    
    // 获取博客详情
    getBlogDetail: (id: number) => {
        return api.get<BlogInfo>(`/system/blog/${id}`)
    },
    
    // 创建博客
    createBlog: (data: CreateBlogRequest) => {
        return api.post<BlogInfo>('/system/blog/create', data)
    },
    
    // 更新博客
    updateBlog: (id: number,  data:UpdateBlogRequest) => {
        return api.put<BlogInfo>(`/system/blog/${id}`, data)
    },
    
    // 删除博客
    deleteBlog: (id: number) => {
        return api.delete(`/system/blog/${id}`)
    },
    
    // 增加浏览量
    increaseViews: (id: number) => {
        return api.put<BlogInfo>(`/system/blog/${id}/views`)
    },
    
    // 点赞/取消点赞
    toggleLike: (id: number) => {
        return api.put<BlogInfo>(`/system/blog/${id}/like`)
    }
}